import { Controller, Sse } from '@nestjs/common';
import { Observable } from 'rxjs';

@Controller('sse')
export class SseController {
    @Sse()
    stream() {
        /* 
        只要 http 返回 Content-Type 为 text/event-stream 的 header，就可以通过 stream 的方式多次返回消息了。
        它传输的是 json 格式的内容，可以用来传输文本或者二进制内容。
        我们通过 Nest 实现了 sse 的接口，用 @Sse 装饰器标识方法，然后返回 Observe 对象就可以了。内部可以通过 observer.next 随时返回数据。
        */
        return new Observable((observer) => {
            console.log("调用");
            observer.next({ data: { msg: 'aaa' } });
            setTimeout(() => {
                observer.next({ data: { msg: 'bbb' } });
            }, 2000);

            setTimeout(() => {
                observer.next({ data: { msg: 'ccc' } });
            }, 5000);
        });
    }
}
